#pragma once

#include "Scene/SceneNodeComponent.h"
#include "Math/BoundingBox.h"
#include "Collider.m.h"

class RRigidBody;

//碰撞体
//碰撞体是一个抽象类，不能直接实例化
//碰撞体用于描述一个物体的碰撞形状,用于物理引擎的碰撞检测
RCLASS()
class WHENGINE_API RCollider:public RSceneNodeComponent
{
    ROBJECT

public:

    virtual void OnBeginPlay() override;
    virtual void OnEndPlay() override;

    //绘制碰撞体
    virtual void PaintCollider(CRenderScene *InRenderSceneData) {};
    
    //获取轴向对齐包围盒
    virtual SBoundingBox GetWorldAABB() 
    {
        return SBoundingBox();
    }

    //找到碰撞体对应的刚体
    //即同一节点上的刚体
    //如果没有找到则返回空指针
    TSharedObjectPtr<RRigidBody> GetRigidBody();

};

